1. Field of the Invention
The invention relates to scheduling requests to hard disk drives, and more specifically to operations on a file server to dynamically control the number of outstanding read requests in a mixed sequential and random read environment.
2. Description of the Related Art
One of the major advancements in computer architecture in recent years has been the development of the local area networks (LAN). In a LAN, a number of workstations, which are generally personal computers, are connected over a common communications network, such as an Ethernet or Token Ring network, to a file server or a plurality of file servers. The file server serves certain minimal functions and in many cases can be extended to include other more complex functions. The minimal functions include printer sharing control and central storage of information which can be accessed by any of the workstations. This central storage is handled by the file server having a hard disk subsystem, conventionally of a very large size, which can be accessed by each of the workstations. One of the major tasks of the various file server operating system, such as NetWare from Novell or VINES from Banyan, is control of operation of the hard disk drives. To this extent, a major function of the operating system is to serve as a disk cache and scheduler of operations to the hard disk drives. For example, in NetWare a significant portion of the memory used in the file server is dedicated to form a cache for the disk data. This is desired so that as many operations as possible can be handled directly by the cache. For example, read operations can be directly handled from the cache without any requests to the hard disk drives and write operations can be posted to the cache, so that the workstation can continue its operation without actually waiting for the data to be written to the hard disk drives. The data is later written to the disk drives. Thus caching greatly improves performance of the workstations.
With the posting of the write operations and the inevitable read miss operations, that is read operations to locations which are not contained in the cache, there are then a number of requests which must actually go to the hard disk drives to fully complete the operation. The operating system to this end also contains a disk request scheduler, conventionally an elevator scheduler.
It is noted that the network operation system does not directly control the hard disk drives, but instead driver software is provided by the computer system or disk controller manufacturer for use with the actual subsystem. The driver software interfaces between the operating system and the actual disk drive assemblies to control operation. Basically the operating system indicates when a request has been received and places the requests on the elevator, with the driver removing requests from the elevator and providing them to the disk drives.
As the hard disk drives are a common, shared element on a LAN, their performance is a crucial item to the overall performance of the network. Should the disk drive subsystem be slow or not capable of readily handling certain circumstances, the overall performance of the LAN will degrade, so that there will be user dissatisfaction and the possible need to acquire further subsystems to improve the network performance to acceptable levels. For this reason it is always desirable to increase the performance of the disk operations as much as possible. Therefore it would be desirable to have driver software located between the operating system and the disk drives which can improve system performance.
It is noted that the disk drive requests on a network can come in several types. Because of the plurality of workstations present, the requests can all be for different files, i.e. to all different locations on the hard disk drives. These are referred to as random requests, that is ones that are not closely associated in physical location on the hard disk drives. Alternatively, a particular workstation can request a very long series of requests, such as when an entire file is being copied. In this case the requests are essentially sequential, which generally allows for greater performance. With a network and a plurality of workstations running a number of different tasks, the file server actually receives a mix of both random and sequential requests, with this mix changing on a frequent basis depending upon the actual programs and tasks being performed by each of the workstations.
In addition, to further complicate matters, modern hard disk drive units preferably conform to the Small Computer System Interface-2 (SCSI-2) standard which allows command tag queuing, that is, the providing of a number of commands to a drive at one time, with the drive then handling the requests, sometimes in the particular order received for simpler drives, but preferably in a more optimized order for more sophisticated drives. Because the file server generally controls a plurality of hard disk drives, it then has the capability of having a large number of requests of a particular type outstanding if command tag queuing is activated. It would be desirable to optimize the driver software to also take into account the variation in sequential and random reads and improve performance depending upon the actual mix of requests being provided to the disk subsystem by varying the number of outstanding requests.